// axios二次封装
import axios from 'axios'
import store from '@/store'
import router from '@/router'

const service = axios.create({
  baseURL: 'https://likede2-java.itheima.net',
  timeout: 5000
})
// 定义一个超时时间
const tokenTimeOut = 3600

// 配置请求拦截器
// 添加请求拦截器
service.interceptors.request.use(function(config) {
  // 在发送请求之前做些什么,具有共用性的字段写在这里
  // console.log(config)
  // config.headers.accept11 = "12356"
  // 如果有token加上公共请求头,统一注入token
  if (store.getters.token) {
    // 每次发接口的时候，都要主动检查token有没有过期，所以放在请求拦截器
    //  获取接口发出的时间time2 - time1 > 规定的时间，就超时
    const time2 = Date.now()
    const tokenTime = (time2 - store.getters.time1) / 1000
    if (tokenTime > tokenTimeOut) {
      // 超时退出登录，回到登陆页面
      store.commit('user/removeToken')
      router.push('/login')
      return Promise.reject(new Error('token超时了'))
    }
    config.headers.Authorization = `${store.getters.token}`
  }
  return config
}, function(error) {
  // 对请求错误做些什么
  // console.log('error', error)

  return Promise.reject(error)
})
export default service
